/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package notificacoes;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;

/**
 *
 * @author Yan
 */
public class Notificacao {

    /* idnotificacao serial NOT NULL,
    preferencia_discente_matriculadisc character varying(9) NOT NULL,
    preferencia_tipo_notif_tiponotificacao character varying NOT NULL,
    docente_matriculadoc character varying NOT NULL,
    texto character varying(150) NOT NULL, */
    private String preferencia_discente_matriculadisc = "";
    private String preferencia_tipo_notif_tiponotificacao = "";
    private String docente_matriculadoc = "";
    private String texto = "";
    static Connection conexao = null;
    static Statement estado = null;
    static ResultSet rs;

    public Notificacao() {
        conexao = new Conexao().Acesso();
    }

    public List<SelectItem> getDocente_matriculadoc() throws SQLException {

        List<SelectItem> items = new ArrayList<SelectItem>();

        estado = conexao.createStatement();
        rs = estado.executeQuery("SELECT * FROM docente");
        while (rs.next() == true) {
            docente_matriculadoc = rs.getString(1);
            items.add(new SelectItem(this, docente_matriculadoc));
        }
        return items;
    }

    public void setDocente_matriculadoc(String docente_matriculadoc) {
        this.docente_matriculadoc = docente_matriculadoc;
    }

    public List<SelectItem> getPreferencia_discente_matriculadisc() throws SQLException {

        List<SelectItem> items = new ArrayList<SelectItem>();

        estado = conexao.createStatement();
        rs = estado.executeQuery("SELECT * FROM preferencia");
        while (rs.next() == true) {
            preferencia_discente_matriculadisc = rs.getString(1);
            items.add(new SelectItem(this, preferencia_discente_matriculadisc));
        }
        return items;
    }

    public void setPreferencia_discente_matriculadisc(String preferencia_discente_matriculadisc) {
        this.preferencia_discente_matriculadisc = preferencia_discente_matriculadisc;
    }

    public List<SelectItem> getPreferencia_tipo_notif_tiponotificacao() throws SQLException {

        List<SelectItem> items = new ArrayList<SelectItem>();

        estado = conexao.createStatement();
        rs = estado.executeQuery("SELECT * FROM tipo_notif");
        while (rs.next() == true) {
            preferencia_tipo_notif_tiponotificacao = rs.getString(1);
            items.add(new SelectItem(this, preferencia_tipo_notif_tiponotificacao));
        }
        return items;
    }

    public void setPreferencia_tipo_notif_tiponotificacao(String preferencia_tipo_notif_tiponotificacao) {
        this.preferencia_tipo_notif_tiponotificacao = preferencia_tipo_notif_tiponotificacao;
    }

    public String getTexto() {
        return texto;
    }

    public void setTexto(String texto) {
        this.texto = texto;
    }

    public String inserir() {
        String result_inserir = "failure";
        try {
            estado = conexao.createStatement();

            estado.execute("INSERT INTO notificacao(discente_matriculadisc, tipo_notif_tiponotificacao, docente_matriculadoc, texto) VALUES ('"
                    + preferencia_discente_matriculadisc + "','" + preferencia_tipo_notif_tiponotificacao + "','" + docente_matriculadoc + "','" + texto + "')");
            estado.execute("INSERT INTO historico_n(discente_matriculadisc, tipo_notif_tiponotificacao, docente_matriculadoc, texto) VALUES ('"
                    + preferencia_discente_matriculadisc + "','" + preferencia_tipo_notif_tiponotificacao + "','" + docente_matriculadoc + "','" + texto + "')");

            estado.close();
            result_inserir = "success";
        } catch (SQLException e) {
            result_inserir = "failure";
            System.out.println(e);
        }
        return result_inserir;
    }

    public List<Destinatario> verificarMensagens() throws SQLException {
        List<Destinatario> items = new ArrayList<Destinatario>();
        int i = 0;
        estado = conexao.createStatement();
        rs = estado.executeQuery("select*from notificacao join discente on discente_matriculadisc = matriculadisc");
        while (rs.next() == true) {
            items.add(new Destinatario(Integer.parseInt(rs.getString(1)), rs.getString(4), rs.getString(8), rs.getString(10), rs.getString(11), rs.getString(5), rs.getString(13)));
            i++;
        }
        return items;
    }

    public String delete(List<Destinatario> a) {
        String result_inserir = "failure";
        try {
            estado = conexao.createStatement();
            int i = 0;
            while (i < a.size()) {
                estado.execute("DELETE FROM notificacao WHERE  idnotificacao = '" + a.get(i).getId() + "'");
                i++;
            }
            estado.close();
            result_inserir = "success";
        } catch (SQLException e) {
            result_inserir = "failure";
        }
        return result_inserir;
    }

    public static void main(String[] args) {
        Notificacao n = new Notificacao();
        n.setDocente_matriculadoc("111111111");
        n.setPreferencia_discente_matriculadisc("071111650");
        n.setPreferencia_tipo_notif_tiponotificacao("Nota");
        n.setTexto("teste1 teste1 teste1 3G-NOTIFIER");
        System.out.println(n.inserir());

        n.setDocente_matriculadoc("111111111");
        n.setPreferencia_discente_matriculadisc("071111660");
        n.setPreferencia_tipo_notif_tiponotificacao("Nota");
        n.setTexto("teste1 teste1 teste1 3G-NOTIFIER");
        System.out.println(n.inserir());

        n.setDocente_matriculadoc("111111111");
        n.setPreferencia_discente_matriculadisc("071111670");
        n.setPreferencia_tipo_notif_tiponotificacao("Nota");
        n.setTexto("teste1 test1e1 teste1 3G-NOTIFIER");
        System.out.println(n.inserir());

        n.setDocente_matriculadoc("111111111");
        n.setPreferencia_discente_matriculadisc("071111680");
        n.setPreferencia_tipo_notif_tiponotificacao("Nota");
        n.setTexto("teste1 teste1 teste1 3G-NOTIFIER");
        System.out.println(n.inserir());

        n.setDocente_matriculadoc("111111111");
        n.setPreferencia_discente_matriculadisc("071111690");
        n.setPreferencia_tipo_notif_tiponotificacao("Nota");
        n.setTexto("teste1 teste1 teste1 3G-NOTIFIER");
        System.out.println(n.inserir());

        n.setDocente_matriculadoc("111111111");
        n.setPreferencia_discente_matriculadisc("071111700");
        n.setPreferencia_tipo_notif_tiponotificacao("Nota");
        n.setTexto("teste1 teste1 teste1 3G-NOTIFIER");
        System.out.println(n.inserir());
    }
}
